/*

*/
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 2e5+10;
long long a[maxn];
long long w[maxn];
bool cmp(int a,int b)
{
	return a>b;
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,k;
		scanf("%d %d",&n,&k);
		for(int i = 1;i<=n;i++)
		{
			scanf("%lld",&a[i]);
		}
		for(int i = 1;i<=k;i++)
		{
			scanf("%lld",&w[i]);
		}
		sort(a+1,a+1+n,cmp);
		sort(w+1,w+1+k);
		long long ans = 0;
		for(int i = 1;i<=k;i++) ans += a[i];
		int flag = k; 
		for(int i = 1;i<=k;i++)
		{
			w[i]--;
			if(w[i]!=0) ans += a[flag+w[i]];
			else ans +=a[i];
			flag = flag + w[i];
		}
		printf("%lld\n",ans);
	}
}
